home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer 2.0 / Internet Surfer 2.0 (Wayzata Technology) (1996).iso / pc / text / mac / faqs.409 < prev    next >
Encoding:
Text File  |  1996-02-12  |  27.7 KB  |  704 lines

  1. Frequently Asked Questions (FAQS);faqs.409
  2.  
  3.  
  4.       Sequence          sequence - same as above but uses copy of data
  5.     ObjGraph            object graph - graph of objects reachable
  6.     Unknown             unknown - support for AsciiFiler
  7.  
  8.   available separately for most systems, ICpak 201 - Graphical User Interface
  9.         (58 classes, more than 1100 methods)
  10.  
  11.   *Object*
  12.     IntCltn
  13.       IntOrdCltn
  14.     PtrCltn
  15.       PtrOrdCltn
  16.     TransCltr
  17.       OpaqCltr
  18.     *Array*
  19.       ColorArray
  20.         ColorMap
  21.       ShortArray
  22.       PtrArray
  23.     RubberLine
  24.     EventQ
  25.     CharString
  26.     Quad
  27.       RectList
  28.       DispObject
  29.         SolidColor
  30.         DispText
  31.         DispMedium
  32.           [****] ....
  33.         Pattern
  34.         Cursor
  35.       EchoBox
  36.     Font
  37.     Menu
  38.       DepMenu
  39.       AdHocMenu
  40.     Timer
  41.     DepObject
  42.     SharObject
  43.  
  44.   available for several platforms, ICpak 301 - GRAPHpak
  45.  
  46.   [****]
  47.  
  48.  
  49.  
  50. =======================
  51. GNU distributed classes
  52. =======================
  53.  
  54.   [****]
  55.  
  56.  
  57. =====================
  58. Public Domain classes
  59. =====================
  60.  
  61.     Random Class (sonata.cc.purdue.edu:/pub/next/oop/classes/Random2.0.tar.Z)
  62.         - implements its own random number generator, supports Gaussian
  63.           variables, die rolling, etc.
  64.  
  65.     Julian Date (sonata.cc.purdue.edu:/pub/next/oop/classes/Julian1.1.tar.Z)
  66.     - implements Julian dates, conversions, etc.  (NeXTSTEP)
  67.  
  68.   [****]
  69.  
  70.  
  71. ========================
  72. NeXT distributed Classes
  73. ========================
  74.  
  75. + == only in NeXTSTEP Release 3 (may follow kit name for all objects in kit)
  76.  
  77. Root Class
  78. ==========
  79. Object                    the root class
  80.  
  81.  
  82. Common Classes
  83. ==============
  84. Some classes of general utility, that don't belong to any kit.
  85.  
  86. *Object*
  87.   Storage                 object that stores a list of items (various types)
  88.   List                    object that stores a list of other objects
  89.   HashTable               key-based storage object
  90.     StreamTable           used for writing sets of data to streams
  91.     NXStringTable         stores a set of strings accessible by key
  92.  
  93. Application Kit (AppKit)
  94. ========================
  95. The first kit, used for implementing the framework and user interface of
  96. (nearly) every NeXTSTEP application.  Provides an engine that handles
  97. the event loop, connection to the Window Server, and handles many standard
  98. services. Includes classes for user controls, font and color management, a
  99. text editor, a dynamic data link system (release 3), inter-application
  100. communication, and several standard panels.
  101.  
  102. *Object*
  103.   Responder               abstract class for objects that respond to events
  104.     Application           an application's "engine"; handles event loop & more
  105.     Window                manages an independent drawing area on the screen
  106.       Panel               special subclass of Window
  107.         Menu              manages array of command items that can be picked
  108.           PopUpList       pop-up list of items that can be picked
  109.         FontPanel         std Panel for selecting Fonts
  110.         PrintPanel        std printing Panel:choose printer, resolution, etc
  111.         PageLayout        std page layout Panel
  112.         SavePanel         std save Panel
  113.           OpenPanel       std open Panel
  114.         NXColorPanel      std color-picker Panel
  115.         NXHelpPanel +     std help Panel
  116.         NXDataLinkPanel + std Panel for managing dynamic data links
  117.     View                  manages a drawing area within a Window
  118.       Control             abstract class for UI objects (buttons, etc)
  119.         NXBrowser         hierarchical browser of items (like a filesystem)
  120.         Matrix            manages a group of Cells (eg, a set of radio buttons)
  121.           Form            a Matrix of FormCells (text entry areas with titles)
  122.         Button            your basic push-button doodad
  123.         TextField         displays text or allows the user to edit it
  124.         Slider            slide its knob to change its value
  125.         Scroller          used for scrolling long documents
  126.         NXColorWell       used for representing a color selection
  127.       Text                std object for editing text (ascii or RTF)
  128.       Box                 used to group other Views in a box
  129.       NXSplitView         used for a pair of Views that share screen space
  130.       ScrollView          manages relation between a ClipView and Scrollers
  131.       ClipView            used for View that's larger than its onscreen area
  132.   Cell                    rubber-stamp class for drawing in a View
  133.     NXBrowserCell         used for the items in an NXBrowser
  134.     SelectionCell         performs some of NXBrowserCell's functionality (obs)
  135.     ActionCell            used with Controls (or a set with a Matrix)
  136.       FormCell            displays a title and a text-entry area in a Form
  137.       ButtonCell          used for drawing Buttons
  138.         MenuCell          used for drawing Menu items
  139.       TextFieldCell       used for drawing text-entry/display areas
  140.       SliderCell          used for drawing a slider bar
  141.   Pasteboard              used for cut/copy/paste and much, much, more
  142.   NXImage                 convenient image-drawer; handles much nitty detail
  143.   NXImageRep              abstract class used with NXImage for specific images
  144.     NXBitmapImageRep        NXImageRep for bitmaps (for example, TIFF)
  145.     NXEPSImageRep           NXImageRep for PostScrip images
  146.     NXCustomImageRep        NXImageRep for user-defined images
  147.     NXCachedImageRep        NXImageRep for already-rendered images
  148.   NXDataLink +            represents a dynamic data link in a document
  149.   NXDataLinkManager +     manages all the data links in a document
  150.   NXSelection +           represents the linked data in a source document
  151.   NXCursor                std object for displaying various cursors
  152.   Font                    object representing a PostScript font
  153.   FontManager             manages the Fonts in an application
  154.   NXColorPicker +         for creating a custom color picker in the color Panel
  155.   NXColorList +           manages a list of named colors (eg, Pantone(R))
  156.   PrintInfo               contains information about a print job
  157.   NXSpellChecker +        used to access spell-checking services
  158.   NXSpellServer +         allows 3rd party to provide a custom spell-checker
  159.   Speaker                 sends inter-application messages
  160.   Listener                receives inter-application messages
  161.   NXJournaler             records and plays back events and sounds
  162.  
  163. Video Class +(was in AppKit for Release 2)
  164. ===========
  165. Displays video input to a NeXTdimension board on screen.
  166.  
  167. *Object*
  168.   NXLiveVideoView         displays video input to a NeXTdimension board
  169.  
  170. Sound Kit
  171. =========
  172. The Sound Kit is a set of classes for managing sound in a NeXTSTEP application.
  173.  
  174. *Object*
  175.   Sound                   represents a single sound
  176.   *Responder*
  177.     *View*
  178.       SoundView           used to display and edit sounds
  179.       SoundMeter          used to indicate sound volume as it plays
  180.   NXSoundStream +         abstract class; manages a stream of sound data
  181.     NXPlayStream +          plays sound data on an NXSoundOut object
  182.     NXRecordStream +        records sound data from an NXSoundIn object
  183.   NXSoundDevice +         abstract class; represents a device (mic, speaker)
  184.     NXSoundIn +             represents sound input devices (microphones)
  185.     NXSoundOut +            represents sound output devices (speakers etc)
  186.  
  187. Music Kit # (no longer maintained by NeXT)
  188. ==========================================
  189. A large kit for music synthesis.  <<Should be available by ftp from CCRMA>>
  190.     (ccrma-ftp.stanford.edu:pub/???)
  191.  
  192. *Object*
  193.   Note                    stores information about a musical event
  194.   Envelope                control musical attributes of Notes
  195.   Part                    ordered set of Notes than can be performed
  196.   Score                   set of Parts that make up a musical piece
  197.   ScorePerformer          plays each Part in a Score
  198.   ScoreRecorder           records a Score, Part by Part and Note by Note
  199.   Orchestra               manages a DSP to synthesize music
  200.   Conductor               controls the timing of a group of objects
  201.   Instrument              manages Notes in a performance
  202.     SynthInstrument         synthesizes its Notes on the DSP
  203.     PartRecorder            copies its notes onto a Part object
  204.     FileWriter              writes its notes to a file on disk
  205.     NoteFilter              modifies Notes and passes them on to other objects
  206.   Performer               abstract class; sends a sequence of notes in time
  207.     FilePerformer           performs music data from a file or stream
  208.       ScorefilePerformer      performs music data from a scorefile
  209.     PartPerformer           performs the Notes in a Part
  210.   NoteReceiver            used by Instruments to realize Notes from Performers
  211.   NoteSender              used by Performers to realize Notes on Instruments
  212.   TuningSystem            represents a musical tuning system
  213.   SynthData               represents DSP memory used in music synthesis
  214.   Midi                    provides and ObjC interfact to the MIDI driver
  215.   WaveTable               represents a period of sound as a series of samples
  216.     Samples                 builds WaveTable of recorded samples
  217.     Partials                builds WaveTable from sine wave components
  218.   PatchTemplate           used as part of a SynthPatch
  219.   SynthPatch              abstract class; represents a sound sythesis module
  220.     Pluck                   synthesizes the sound of a plucked string
  221.     Wave1                   WaveTable synthesis; 1 table
  222.     Wave1v                  WaveTable synth; 1 table with vibrato
  223.     Wave1i                  WaveTable synth; 1 table with freq interpolation
  224.     Wave1vi                 WaveTable synth; 1 table with both
  225.     DBWave1v                WaveTable synth; 1 table with vibrato
  226.     DBWave1i                WaveTable synth; 1 table with interpolation
  227.     DBWave2vi               WaveTable synth; 2 tables with both
  228.     Fm1                     Freq modulation synth; simple fm
  229.     Fm1i                    Freq mod synth; simple fm with freq interpolation
  230.     Fm1v                    Freq mod synth; simple fm with vibrato
  231.     Fm1vi                   Freq mod synth; simple fm with both
  232.     Fm2cvi                  Freq mod synth; Cascade fm
  233.     Fm2cnvi                 Freq mod synth; Cascade fm with random mod. (noise)
  234.     Fm2pvi                  Freq mod synth; Parallel fm
  235.     Fm2pnvi                 Freq mod synth; Parallel fm with noise
  236.   UnitGenerator             abstract class; building blocks of DSP synthesis
  237.     Add2UG                  Various types of UnitGenerators
  238.     AllPass1UG              ...
  239.     AsympUG
  240.     ConstantUG
  241.     DelayUG
  242.     DswitchtUG
  243.     DswitchUG
  244.     InterpUG
  245.     Mul1add2UG
  246.     Mul2UG
  247.     OnepoleUG
  248.     OnezeroUG
  249.     OscgafUG
  250.     OscgafiUG
  251.     UscgUG
  252.     Out1aUG
  253.     Out1bUG
  254.     Out2sumUG
  255.     ScaleUG
  256.     Scl1add2UG
  257.     Scl2add2UG
  258.     SnoiseUG
  259.     UnoiseUG
  260.  
  261. Database Kit (DBKit) +
  262. ======================
  263. Manages connections to entity-relationship database servers.  The Database kit
  264. includes these services: communication with client-server databases, modeling
  265. properties (attributes and relationships) of each database, record management
  266. and buffering, data flow between record managers and the application user
  267. interface, and user interface objects for display and editing.
  268.  
  269. *Object*
  270.   DBDatabase              represents a connection to a database server
  271.   DBExpression            encapsulates a database expression as an object
  272.   DBQualifier             represents cond. records must satisfy to be selected
  273.   DBValue                 stores a value of an arbitrary type
  274.   DBBinder                connects database items to ObjC objects
  275.   DBModule                maps database model entities to application objects
  276.   DBRecordStream          represents a sequence of fetched database records
  277.     DBRecordList            supports random access to a seq. of records
  278.   DBFetchGroup            manages DBRecordList data with UI presentation
  279.   DBAssocation            associates a property with a destination object
  280.   *Responder*
  281.     *View*
  282.       *Control*
  283.         DBImageView       displays an NXImage object in a frame
  284.       *ScrollView*
  285.         DBTableView       spreadsheet-like view for modifying tables of data
  286.   DBTableVector           represents a field in a DBTableView
  287.   DBFormatter             abstract class for formatting data
  288.     DBTextFormatter         quickly formats read-only text data
  289.     DBEditableFormatter     formats editable text data
  290.     DBImageFormatter        formats, scales, and aligns image data
  291.  
  292. Indexing Kit (IXKit) +
  293. ======================
  294. The Indexing Kit is a set of programmatic tools for managing data, especially
  295. the large amounts of data characteristic of information-intensive applications.
  296. Much as the Application Kit provides a framework for a graphical interface,
  297. the Indexing Kit provides a framework for data management.
  298.  
  299. *Object*
  300.   IXStore                 relocatable storage allocator/manager
  301.     IXStoreFile           disk-based IXStore
  302.   IXStoreBlock            "wrapper" for a single block of storage in an IXStore
  303.   IXStoreDirectory        allows access to objects in an IXStore by name
  304.   IXBTree                 associative (key-based) access to data in an IXStore
  305.   IXBTreeCursor           a pointer to an item in an IXBTree
  306.     IXPostingCursor       cursor that assumes data is sets of postings (below)
  307.   IXRecordManager         manages large indexed collections of data
  308.   IXPostingSet            manages a set of postings (refs to indexed records)
  309.   *List*
  310.     IXPostingList         lazily retrieves objects from postings
  311.   IXFileFinder            indexes and finds files with a general query language
  312.   IXFileRecord            represents a file in the filesystem
  313.   IXAttributeParser       parses text into lists of tokens
  314.   IXAttributeReader       breaks text into tokens
  315.     IXLanguageReader      abstract class; for tokenizing a specific language
  316.   IXWeightingDomain       represents frequency information about a set of text
  317.   IXAttributeQuery        processes a query against a conforming object
  318.  
  319. Mach Kit +
  320. ==========
  321. The Mach Kit provides a number of classes for convenient use of Mach mutexes,
  322. and a number of classes used by the Distributed Objects facility.
  323.  
  324. *Object*
  325.   NXData                  wrapper for (void *) data
  326.   NXLock                  object-oriented mutex lock
  327.   NXConditionLock         as above, but waits on a condition
  328.   NXRecursiveLock         as above, but same thread can acquire multiple times
  329.   NXSpinLock              as above, for use with short critical sections
  330.   NXProtocolChecker       restricts messaging access to remote objects
  331.   NXInvalidationNotifier  notifies clients when a connection breaks
  332.     NXPort                wrapper for a Mach port
  333.   NXNetNameServer         provides ObjC interface to NeXT's NetNameServer
  334.  
  335. Distributed Objects Facility +
  336. ==============================
  337. The Distributed Objects facility allows a process to send messages to objects
  338. in the address space of a different process.  For all practical purposes, the
  339. remote object exists in the sending process.  Nearly any message can be sent,
  340. and many data types, including other objects can be sent and received
  341. "across the wire."
  342.  
  343. NXProxy                   a "root" class that represents a remote object
  344. *Object*
  345.   NXConnection            manages a connection between remote objects
  346.  
  347. Phone Kit +
  348. ===========
  349. The Phone Kit offers an easy way for a developer to connect an application to
  350. a telephone line, to initiate and receive calls over the line, and to transmit
  351. and receive data during a call.  The phone line must be attached to the user's
  352. computer, or to a computer on the user's network, through a Hayes ISDN
  353. Extender(R) or an equivalent device.
  354.  
  355. *Object*
  356.   NXPhone                 represents a phone line connected to the computer
  357.   NXPhoneCall             represents/manages a connection over a phone line
  358.   NXPhoneChannel          represents a channel within a connection
  359.  
  360. 3D Graphics Kit (3DKit) +
  361. =========================
  362. The 3D Kit uses RenderMan to create 3D scenes, much as the Application Kit
  363. uses the PostScript language to draw 2D graphics.  It also provides for
  364. animation and real-time manipulation of rendered scenes.
  365.  
  366. *Object*
  367.   *NXImageRep*
  368.     N3DRIBImageRep        NXImageRep for RenderMan RIB data
  369.   *Responder*
  370.     *Window*
  371.       *Panel*
  372.         N3DRenderPanel    std Panel for selecting hosts to render scene on
  373.     *View*
  374.       N3DCamera           renders a single 3D scene
  375.         N3DMovieCamera    rederes a sequence of 3D scenes, providing animation
  376.   N3DShape                abstract class representing a single 3D "object"
  377.     N3DLight              represents a source of light in a scene
  378.   N3DShader               handles surface shading/texturing/coloring
  379.   N3DRotator              rotates/moves a 3D scene in various ways
  380.   N3DContextManager       manages rendering contexts for an application
  381.  
  382. NetInfo Kit (NIKit) +
  383. =====================
  384. These are all standard panels for accessing NetInfo information.  Strangely,
  385. most aren't subclasses of Panel.
  386.  
  387. *Object*
  388.   NIDomain                represents a NetInfo domain
  389.   NIDomainPanel           std panel for selecting a NetInfo domain
  390.     NIOpenPanel           std panel for opening an item in a domain
  391.       NISavePanel         std panel for saving info for a domain
  392.   *Responder*
  393.     *Window*
  394.       *Panel*
  395.         NILoginPanel      used, for example, to authorize root access to run an
  396. app
  397.  
  398. Interface Builder Applicaton Classes (IB Classes) +
  399. ===================================================
  400. These classes allow developers to expand the functionality of the
  401. Interface Builder application, creating their own palettes of objects
  402. that can be dragged into an interface, and inspectors to set and view
  403. the attributes of those objects.
  404.  
  405. *Object*
  406.   IBInspector             defines a custom Interface Builder inspector
  407.   IBPalette               connects a loadable palette to Interface Builder
  408.  
  409. Preferences Application Classes +
  410. =================================
  411. These classes allow developers to add their own modules to the Preferences
  412. application.
  413.  
  414. *Object*
  415.   Layout                  represents a Preferences module's layout view
  416.  
  417. Workspace Manager Application Classes +
  418. =======================================
  419. These classes allow developers to add their own file contents inspectors to
  420. the Workspace Manager application.
  421.  
  422. *Object*
  423.   WMInspector             represents a Workspace contents inspector
  424.  
  425.  
  426.  
  427. ==============================
  428. NeXT 3rd Party Class Libraries
  429. ==============================
  430.  
  431.   [many others - NeXT now publishes an _Object Works_ Catalogue, which
  432.     tells of available classes]
  433.  
  434.   BarCodeKit - an object library for creating bar codes in PostScript and
  435.                 TIFF formats.  (Hot Software, (617) 252-0088, info@hot.com)
  436.  
  437.   SerialPortKit - generic serial port object, modem object, specific bar
  438.         code readers, magnetic stripe card readers and other serial
  439.         devices. (Hot Software, (617) 252 0088, info@hot.com)
  440.  
  441.   GeoKit - objects that perform map rendering
  442.                 (Deltos Fleet Computing, (214) 540-2301)
  443.  
  444.   ChooserPalette - a selection list manager
  445.                 (Objective Technologies, (212) 227 6767)
  446.  
  447.   GraphPalette - tools for graphing data in custom apps
  448.                 (Objective Technologies, (212) 227 6767)
  449.  
  450.   MathPalette - tools for interfacing with Mathmatica
  451.                 (Objective Technologies, (212) 227 6767)
  452.  
  453.   SmartFieldPalette - supplies data input fields that restrict and format
  454.                 input, report errors, and notify the user of field content
  455.                 (Objective Technologies, (212) 227 6767)
  456.  
  457.   Serial Solutions from BenaTong - Object wrappers for the UNIX ioctls, Modem
  458.         support and MagCard/BarCode reader support.
  459.         (BenaTong (614) 276-7850 benatong@count0.cmhnet.org)
  460.  
  461.  
  462.  
  463. --------------
  464.  This compendium is doomed to always be incomplete.  If you would like
  465. to add something to it that was left off, you can either contact me
  466. directly (shirley@fdr.jsc.nasa.gov, Bill Shirley) or post to the group
  467. comp.lang.objective-c.  Contacting me directly will have better chances
  468. of me making the change.
  469.  Again, thanks to all those who have helped, informed, and given feedback.
  470. --
  471.  Bill Shirley
  472.  shirley@fdr.jsc.nasa.gov
  473. --
  474.     ``One lonesome body,        Bill Shirley
  475.       one lonesome song.        shirley@fdr.jsc.nasa.gov
  476.       No lonesome body,
  477.       no lonesome song.'' - throwing muses
  478. Xref: bloom-picayune.mit.edu comp.lang.objective-c:1010 news.answers:4553
  479. Path: bloom-picayune.mit.edu!enterpoop.mit.edu!spool.mu.edu!olivea!sun-barr!cs.utexas.edu!bcm!aio!fdr!shirley
  480. From: shirley@fdr.uucp (Bill Shirley [CSC])
  481. Newsgroups: comp.lang.objective-c,news.answers
  482. Subject: Objective-C  Frequently Asked Questions
  483. Summary: Answers to Frequently Asked Questions asked about the Objective-C
  484.     programming language, an Object Oriented extension to the C.
  485.     Please read this before posting to comp.lang.objective-c.
  486. Message-ID: <objc_724237201@fdr.jsc.nasa.edu>
  487. Date: 13 Dec 92 09:00:31 GMT
  488. Expires: 26 Jan 1993 09:00:01 GMT
  489. Sender: news@aio.jsc.nasa.gov (USENET News System)
  490. Followup-To: comp.lang.objective-c
  491. Organization: nasa-jsc
  492. Lines: 331
  493. Approved: news-answers-request@MIT.Edu
  494. Supersedes: <objc_721077644@fdr.jsc.nasa.edu>
  495.  
  496. Archive-name: Objective-C/faq
  497. Last-modified: 1992/10/09
  498. Version: 1.0
  499.  
  500.  
  501.                 Answers to
  502.             FREQUENTLY ASKED QUESTIONS
  503.                 concerning    
  504.                    Objective-C
  505.  
  506.  
  507.  
  508. Clarification: I have used the word `ObjC' for `Objective-C', the proper
  509.     and official name for the language discussed within, throughout
  510.     this file.  Is is simply a time and space saver.
  511.  
  512.  
  513.  
  514. Questions & Answers
  515. ~~~~~~~~~~~~~~~~~~~
  516. Q1. What is Objective-C?
  517.  
  518.  A1. An object oriented (OO) computer language based on the C language and
  519.     influenced by SmallTalk.  It was designed by The Stepstone Corp. (and
  520.     is a Trademark of Stepstone) and includes many of the OO things that
  521.     make Smalltalk the "language to learn OOP with", and many of the
  522.     great things about C that make it highly portable and very optimizable.
  523.     It is NOT C++.
  524.  
  525.  
  526. Q2. Who makes an Objective-C compiler, what does it cost, how do I order?
  527.  
  528.  A2.1    The Stepstone Corporation
  529.     (203) 426-1875 - (800) BUY-OBJEct voice / (203) 270-0106 fax
  530.     75 Glen Road
  531.     Sandy Hook, CT 06482
  532.  
  533.     compilers and runtime
  534.  
  535.         IBM RISC System/6000 w/ AIX
  536.         Sun 3, 4, SPARCstations w/ SunOS
  537.         HP9000/300,400,700,800 w/ HP-UX
  538.         DEC Stations w/ ULTRIX
  539.         Data General AViiON w/ DG/UX
  540.         SCO UNIX SYS V
  541.         PS/2 w/ AIX or OS/2
  542.         PC-AT w/ MS-DOS
  543.         VAX w/ VMS
  544.               MIPS
  545.          NeXT
  546.               Macs with MPW (Mac Programmers Workshop)
  547.  
  548.     class libraries available for a subset of the above
  549.  
  550.  A2.2    NeXT, Inc.
  551.  
  552.         Comes bundled with the extended OS release.
  553.         (NeXTSTEP 3.0 - $295 on CD ROM) shipped Sept 92
  554.         (NeXTSTEP '486 - $995) intended Q4 92
  555.  
  556.  A2.3    GNU Project
  557.  
  558.         Freely available
  559.         GNU Experimental Tape
  560.         GCC 2 (the GNU C/C++/ObjC Compiler with many new
  561.             features - doesn't include runtime - yet)
  562.         prep.ai.mit.edu (18.71.0.38) pub/gnu/gcc-2.0.tar.Z
  563.         (See sites at end of file)
  564.  
  565.  
  566.  
  567.  
  568. Q3. Does GNU's gcc `do' Objective-C?
  569.  
  570.  A3. Didn't you read the above answer: It does as of release 2.0,
  571.     but does not initially include the runtime system required
  572.     to use ObjC.  A runtime has been completed and donated to
  573.     the project.  It is currently (Sept 92) undergoing testing
  574.     and some rewriting.
  575.     Reports are: On the NeXT, which has a runtime system, programs
  576.     compiled with gcc 2.0 (as available on the net) run when linked
  577.     to NeXT's runtime library.
  578.     A runtime has been completed and donated to the project.  It is
  579.     currently (Sept 92) undergoing testing and some rewriting.
  580.     A group has formed to help develop a library of Objective-C
  581.     classes to be distributed freely by the GNU project.
  582.  
  583.  
  584. Q4. What books concerning Objective-C are available?
  585.  
  586.  A4.1
  587.     Object Oriented Programming: An Evolutionary Approach
  588.     Author:        Brad J. Cox (, Andrew J. Novobilski second edition)
  589.     Publisher:    Addison-Wesley
  590.     ISBN#:        0-201-10393-1    August, 1986
  591.     ISBN#:        0-201-54834-8    1991
  592.     two editions
  593.  
  594.  A4.2
  595.     Objective-C: Object Oriented Programming Techniques
  596.     Authors:    Lewis J. Pinson, Richard S. Wiener
  597.     Publisher:    Addison-Wesley, 1991
  598.     ISBN#:        0-201-50828-1
  599.     Abstract:    Includes many examples, discusses both Stepstone's
  600.             and NeXT's versions of Objective-C, and the (minor)
  601.             differences between the two.
  602.  
  603.  A4.3
  604.     An Introduction to Object-Oriented Programming
  605.     Author:        Timothy Budd
  606.     Publisher:    Addison-Wesley
  607.     ISBN#:        0-201-54709-0
  608.     Abstract:    An intro to the topic of OOP, as well as a comparison
  609.             of C++, Objective-C, Smalltalk, and Object Pascal
  610.  
  611.  A4.4
  612.     NeXTSTEP Programming  Step 1: Object-oriented applications
  613.     Availablility:    Fall, 1992
  614.     Authors:    Simson L. Garfinkel, Michael K. Mahoney
  615.     Publisher:    Springer-Verlag, 1992    (800)SPR-INGE
  616.     Abstract:    It's updated to discuss NeXTSTEP 3.0 features
  617.             (Project Builder, new development environment)
  618.             but doesn't discuss 3DKit or DBKit
  619.  
  620.  
  621. Q5. What is the difference between Objective-C and C?
  622.  
  623.  A5. ObjC is a superset of the ANSI C standard.  It is an object oriented
  624.     language that has extensions similar to Smalltalk applied to C.
  625.     It includes a few more key words and constructs.
  626.     New Keywords:
  627.      @interface
  628.      @implementation
  629.      @public
  630.      @selector
  631.     Constructs:
  632.      [instance  method: param];  <- sending a message to an instance
  633.     Types:
  634.      id    - basically a generic pointer to an object
  635.  
  636.     [****************]
  637.  
  638.  
  639. Q6. What is the difference between Objective C and C++?
  640.  
  641.  A6. C++ has operator overloading, ObjC doesn't.  Some consider this
  642.     to be 'syntactic sugar', and it is, but it can be a quite
  643.     handy bit of syntactic sugar.
  644.      C++ has multiple inheritance, ObjC doesn't.  There is much
  645.     debate over the desirability and value of this.  There are
  646.     several ways to 'get around' this in ObjC.
  647.      The run-time binding mechanism differ quite a bit in their functionality.
  648.     (Details?? [***])
  649.  
  650.  
  651. Q7. What is the difference between NeXT's, Stepstone's and GNU's
  652.     versions of Objective C?
  653.  
  654.  A7. NeXT has defined and distributed its own class libraries, which
  655.     are very integral to the NeXTstep environment.
  656.      NeXT also extended Stepstones definition of the language to include
  657.     new constructs, such as protocols, which are touted to deal with
  658.     some aspects of multiple inheritance.
  659.      NeXT's implementation does *not* support static binding, Stepstone's
  660.     does, and GNU's (does?/doesn't?).
  661.      Stepstone has a standard set of class libraries that work across
  662.     all supported machines.
  663.      GNU gcc (C/C++/ObjC) does not have a runtime system for
  664.     resolving message passing, or include any classes. (yet)
  665.      The Object (root) class of NeXT's and Stepstone's are slightly
  666.     different; there are several Object methods and runtime C
  667.     functions that are not part of Stepstone's.
  668.      NeXT (and GNU?) supports Categories, Stepstone doesn't.
  669.      NeXT has a native language debugger, Stepstone and GNU don't.
  670.      NeXT (3.0) supports Protocols and forward declarations of classes,
  671.     Stepstone (does/n't?), GNU (does/n't?).
  672.      [****************]
  673.  
  674.  
  675. Q8. What are some of the common problems of the language and how can
  676.     I work around them? (forward declarations of classes, class variables)
  677.  
  678.  A8.1 There is no innate multiple inheritance (of course some see this as a
  679.     benefit).
  680.       To get around it you can create a compound class ( a class with
  681.     instance variables that are /id/s of other objects.  They can
  682.     specifically redirect messages to any combination of the
  683.     objects they are compounded of. (It isn't *that* much of a
  684.     hassle and you have direct control over the inheritance
  685.     logistics)
  686.       Protocols address this to some extent. [***]
  687.       [** how does Delegation fit in here? **]
  688.  
  689.  A8.2 ObjC has no class variables.
  690.       You can get around this by defining a static variable in the .m
  691.     file, and defining access methods for it.  This is actually a
  692.     more desirable way of designing a class hierarchy, because it
  693.     allows subclasses shouldn't access superclass storage (this would
  694.     cause the subclass to break if the superclass was reimplemented),
  695.     and allows the subclass to override the storage (if the classes
  696.     access all their own variables via methods)
  697.  
  698.  A8.3 problem X [****************]
  699.  
  700.  
  701. Q9. What class libraries are available for Objective C?
  702.  
  703.  A9.  See the related FAQ file -  _Objective C - a matter of Class_
  704.